home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / games.arc / BATSHIP.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  14.0 KB  |  545 lines

  1. 1000  REM ************* B A T T L E S H I P ********************
  2. 1010  REM PUBLIC DOMAIN SOFTWARE
  3. 1020  REM FILE NAME IS "BATSHIP.BAS"
  4. 1030  REM WRITTEN BY G.S. ALBERTS
  5. 1040  REM 33 WILDWOOD DRIVE, ESSEX JCT. VERMONT 05452 802-878-8941
  6. 1050  REM IBM BURLINGTON, VERMONT TIE LINE 446-3455 DEPT KO2 BLDG 965-2
  7. 1060  REM LAST REVISED 7-27-82
  8. 1070  REM MINIMUM CONFIGURATION BASICA, MONOCHROME DISPLAY, 64K MEMORY
  9. 1080  REM SET-UP AND OPERATION INCLUDED IN THE INSTRUCTIONS AS PART OF PROGRAM
  10. 1090  'REM THIS AREA FOR START UP OF THE PROGRAM
  11. 1100  DIM X(25),Y(25),S$(100,3),YY$(100,3),XX(100,3),YY(100,3)
  12. 1110  DIM XED(500),YED(500)
  13. 1120  DIM A(500),B(500)
  14. 1130  CLS:KEY OFF
  15. 1140  LOCATE 10,30:PRINT "B A T T L E S H I P"
  16. 1150  LOCATE 12,30:PRINT "BY G.S. ALBERTS"
  17. 1160  REM GENERATE RANDOM NUMBER SEED FROM THE TIME$ FUNCTION
  18. 1170  H=1+VAL(LEFT$(TIME$,2)):M=1+VAL(MID$(TIME$,4,2)):S=1+VAL(RIGHT$(TIME$,2))
  19. 1180  IF H>16 THEN H=H-12
  20. 1190  IF H>8 THEN H=8-H
  21. 1200  N=H*M*S:RANDOMIZE(N)
  22. 1210  LOCATE 24,30:INPUT "DO YOU NEED INSTRUCTION? (Y/N)";ANS$
  23. 1220  IF LEFT$(ANS$,1)="Y" THEN GOTO 1250
  24. 1230  IF LEFT$(ANS$,1)="y" THEN GOTO 1250
  25. 1240  GOTO 1510
  26. 1250  REM THIS IS THE INSTRUCTION SECTION
  27. 1260  CLS:PRINT "THE COMPUTER WILL HIDE SIX SHIPS ON A 10 X 10 GRID.  THE SHIPS CAN NOT "
  28. 1270  PRINT "TOUCH EACH OTHER OR OVERLAP.  IT WILL BE YOUR JOB, USING SALVOS OF THREE "
  29. 1280  PRINT "SHOTS EACH TURN, TO SINK ALL OF THE SHIPS IN THE MINIMUM NUMBER OF TURNS."
  30. 1290  PRINT :PRINT "YOU WILL BE ASKED TO INPUT YOUR SHOTS USING THE CO-ORDINATE SYSTEM"
  31. 1300  PRINT "SHOWN ON THE PLAYING BOARD i.e. A1, OR B3, OR H9, etc."
  32. 1310  PRINT
  33. 1320  PRINT "YOU HAVE TO PUT A SHELL INTO EACH GRID SQUARE CONTAINING A PART OF THE SHIP"
  34. 1330  PRINT "TO SINK THAT SHIP.  THEREFORE IT TAKES 7 HITS TO SINK THE AIRCRAFT CARRIER"
  35. 1340  PRINT "5 TO SINK THE BATTLESHIP, 4 TO SINK THE CRUISER, ETC."
  36. 1350  PRINT:PRINT
  37. 1360  PRINT "THE COMPUTER WILL RECORD YOUR SHOTS ON THE PLAYING BOARD BY THE TURN"
  38. 1370  PRINT "NUMBER OF THAT SHOT.  AFTER THE THREE SHOTS OF THE SALVO IT WILL ALSO"
  39. 1380  PRINT "PRINT ANY HITS ON THE SHIP SCORECARD TO THE RIGHT OF THE BOARD - AGAIN"
  40. 1390  PRINT "USING THE TURN NUMBER WHEN THAT SHIP WAS HIT."
  41. 1400  PRINT:PRINT "HOWEVER THE PLACE WHERE THE SHOT IS RECORDED ON THE SCORECARD"
  42. 1410  PRINT "WILL NOT NECESSARILY BE THE PART OF THE SHIP HIT.  IS IS USED ONLY"
  43. 1420  PRINT "TO GIVE YOU A RECORD OF WHICH SHIPS YOU HIT ON WHICH TURNS."
  44. 1430  PRINT:PRINT
  45. 1440  INPUT "DO YOU WANT TO SEE THE PLAYING BOARD AND SHIPS USED BEFORE STARTING";ANS$
  46. 1450  IF LEFT$(ANS$,1)="N" THEN GOTO 1510
  47. 1460  IF LEFT$(ANS$,1)="n" THEN GOTO 1510
  48. 1470  REM THIS SECTION JUST SHOWS THE BOARD AND SHIPS WITHOUT HIDING THEM
  49. 1480  GOSUB 1700
  50. 1490  LOCATE 24,1 :INPUT "PRESS ENTER TO CONTINUE";X$
  51. 1500  GOTO 1510
  52. 1510  REM THIS IS THE START OF THE GAME SECTION-INCLUDING THE HIDING OF SHIPS
  53. 1520  CLS
  54. 1530  LOCATE 10,30:INPUT "ARE YOU READY TO GO";ANS$
  55. 1540  IF LEFT$(ANS$,1)="N" THEN CHAIN "MENU",1000
  56. 1550  IF LEFT$(ANS$,1)="n" THEN CHAIN "MENU",1000
  57. 1560  GOSUB 6400  REM PLAY CHARGE
  58. 1570  GOSUB 1700   REM SET UP GAME BOARD
  59. 1580  GOSUB 2850  REM HIDE THE SHIPS
  60. 1590  TURN=1
  61. 1600  GOSUB 5360  REM INPUT THE SHOTS FOR THIS TURN
  62. 1610  IF HAC+HB+HC+HD+HS+HPT=22 THEN GOTO 1650  REM IF ALL SHIPS SUNK THEN CHAIN "MENU",1000
  63. 1620  TURN=TURN+1
  64. 1630  GOSUB 5360 REM INPUT SHOTS FOR TURN + 1
  65. 1640  GOTO 1610 REM CHECK TO SEE IF ALL SHIPS SUNK
  66. 1650  GOSUB 6400 REM PLAY CHARGE
  67. 1660  COLOR 0,7:LOCATE 23,1:PRINT "OK---------SO YOU FINALLY DID IT IN ";TURN;"SHOTS          "
  68. 1670  GOSUB 6420 REM PLAY TAPS
  69. 1680  COLOR 7,0
  70. 1690  CHAIN "MENU",1000
  71. 1700  CLS 'THIS IS THE SUBROUTINE FOR SETTING UP THE GAME BOARD
  72. 1710  FOR J=2 TO 22 STEP 2
  73. 1720  FOR I=1 TO 52
  74. 1730  LOCATE J,I
  75. 1740  PRINT CHR$(220);
  76. 1750  NEXT I
  77. 1760  NEXT J
  78. 1770  FOR J=1 TO 22
  79. 1780  FOR I=3 TO 53 STEP 5
  80. 1790  LOCATE J,I
  81. 1800  PRINT CHR$(219);
  82. 1810  NEXT I
  83. 1820  NEXT J
  84. 1830  I=0
  85. 1840  FOR J=4 TO 49 STEP 5
  86. 1850  LOCATE 1,J
  87. 1860  PRINT I;
  88. 1870  I=I+1
  89. 1880  NEXT J
  90. 1890  LOCATE 3,1
  91. 1900  PRINT "A"
  92. 1910  LOCATE 5,1:PRINT "B"
  93. 1920  LOCATE 7,1:PRINT "C"
  94. 1930  LOCATE 9,1:PRINT "D"
  95. 1940  LOCATE 11,1:PRINT "E"
  96. 1950  LOCATE 13,1:PRINT "F"
  97. 1960  LOCATE 15,1:PRINT "G"
  98. 1970  LOCATE 17,1:PRINT "H"
  99. 1980  LOCATE 19,1:PRINT "I"
  100. 1990  LOCATE 21,1:PRINT "J"
  101. 2000  FOR J=55 TO 80
  102. 2010  FOR I= 3 TO 5 STEP 2
  103. 2020  LOCATE I,J
  104. 2030  PRINT CHR$(220)
  105. 2040  NEXT I
  106. 2050  NEXT J
  107. 2060  FOR J=55 TO 60
  108. 2070  FOR I=1 TO 7 STEP 2
  109. 2080  LOCATE I,J
  110. 2090  PRINT CHR$(220)
  111. 2100  NEXT I
  112. 2110  NEXT J
  113. 2120  FOR I=55 TO 60 STEP 5
  114. 2130  FOR J=2 TO 7
  115. 2140  LOCATE J,I
  116. 2150  PRINT CHR$(219);
  117. 2160  NEXT J
  118. 2170  NEXT I
  119. 2180  FOR I=65 TO 80 STEP 5
  120. 2190  FOR J=4 TO 5
  121. 2200  LOCATE J,I
  122. 2210  PRINT CHR$(219);
  123. 2220  NEXT J
  124. 2230  NEXT I
  125. 2240  LOCATE 2,63:PRINT "AIRCRAFT CARRIER"
  126. 2250  FOR I=55 TO 80
  127. 2260  FOR J=9 TO 11 STEP 2
  128. 2270  LOCATE J,I
  129. 2280  PRINT CHR$(220)
  130. 2290  NEXT J
  131. 2300  NEXT I
  132. 2310  FOR J=55 TO 80 STEP 5
  133. 2320  FOR I=10 TO 11
  134. 2330  LOCATE I,J
  135. 2340  PRINT CHR$(219)
  136. 2350  NEXT I
  137. 2360  NEXT J
  138. 2370  LOCATE 8,66:PRINT "BATTLESHIP"
  139. 2380  FOR J=55 TO 75
  140. 2390  FOR I=13 TO 15 STEP 2
  141. 2400  LOCATE I,J
  142. 2410  PRINT CHR$(220)
  143. 2420  NEXT I
  144. 2430  NEXT J
  145. 2440  FOR I=14 TO 15
  146. 2450  FOR J=55 TO 75 STEP 5
  147. 2460  LOCATE I,J
  148. 2470  PRINT CHR$(219)
  149. 2480  NEXT J
  150. 2490  NEXT I
  151. 2500  LOCATE 12,60:PRINT "CRUISER"
  152. 2510  FOR J=55 TO 70
  153. 2520  FOR I=17 TO 19 STEP 2
  154. 2530  LOCATE I,J
  155. 2540  PRINT CHR$(220)
  156. 2550  NEXT I
  157. 2560  NEXT J
  158. 2570  LOCATE 16,55:PRINT "DESTROYER"
  159. 2580  FOR J=55 TO 70 STEP 5
  160. 2590  FOR I=18 TO 19
  161. 2600  LOCATE I,J
  162. 2610  PRINT CHR$(219);
  163. 2620  NEXT I
  164. 2630  NEXT J
  165. 2640  LOCATE 20,57:PRINT "SUB";
  166. 2650  FOR I=21 TO 23 STEP 2
  167. 2660  FOR J=55 TO 65
  168. 2670  LOCATE I,J
  169. 2680  PRINT CHR$(220);
  170. 2690  NEXT J
  171. 2700  NEXT I
  172. 2710  LOCATE 20,72 :PRINT "P.T.";
  173. 2720  FOR J=70 TO 75
  174. 2730  FOR I=21 TO 23 STEP 2
  175. 2740  LOCATE I,J
  176. 2750  PRINT CHR$(220);
  177. 2760  NEXT I
  178. 2770  NEXT J
  179. 2780  FOR J=22 TO 23
  180. 2790  FOR I=55 TO 75 STEP 5
  181. 2800  LOCATE J,I
  182. 2810  PRINT CHR$(219);
  183. 2820  NEXT I
  184. 2830  NEXT J
  185. 2840  RETURN
  186. 2850  REM THIS IS THE SECTION FOR HIDING THE SHIPS
  187. 2860  REM THIS IS THE SECTION FOR HIDING THE AIRCRAFT CARRIER
  188. 2870  COLOR 28,0
  189. 2880  LOCATE 23,1
  190. 2890  PRINT "THE SYSTEM IS WORKING ON THE AIRCRAFT CARRIER."
  191. 2900  COLOR 7,0
  192. 2910  X=INT(10*RND):Y=INT(10*RND):Z=INT(4*RND):E=INT(2*RND)+1
  193. 2920  REM CHOOSE RANDOM NUMBERS FOR START OF SHIP, DIRECTION OF SHIP AND WHICH END OF THE AIRCRAFT CARRIER HAS THE CROSS
  194. 2930  IF Y<4 AND Z=0 THEN GOTO 2910
  195. 2940  IF X>5 AND Z=1 THEN GOTO 2910
  196. 2950  IF Y>5 AND Z=2 THEN GOTO 2910
  197. 2960  IF X<4 AND Z=3 THEN GOTO 2910
  198. 2970  IF Z=0 AND X=0 THEN GOTO 2910
  199. 2980  IF Z=0 AND X=9 THEN GOTO 2910
  200. 2990  IF Z=1 AND Y=0 THEN GOTO 2910
  201. 3000  IF Z=1 AND Y=9 THEN GOTO 2910
  202. 3010  IF Z=2 AND X=0 THEN GOTO 2910
  203. 3020  IF Z=2 AND X=9 THEN GOTO 2910
  204. 3030  IF Z=3 AND Y=0 THEN GOTO 2910
  205. 3040  IF Z=3 AND Y=9 THEN GOTO 2910
  206. 3050  ON Z GOTO 3130,3200,3270
  207. 3060  REM PLACE THE AC IN POSSIBLE DIRECTION 0 (N)
  208. 3070  Y(1)=Y:Y(2)=Y-1:Y(3)=Y-2:Y(4)=Y-3:Y(5)=Y-4
  209. 3080  FOR I=1 TO 5:X(I)=X:NEXT I
  210. 3090  X(6)=X+1:X(7)=X-1
  211. 3100  IF E=1 THEN Y(6)=Y:Y(7)=Y
  212. 3110  IF E=2 THEN Y(6)=Y(5):Y(7)=Y(5)
  213. 3120  GOTO 3340
  214. 3130  REM PLACE THE AC IN POSSIBLE DIRECTION 1 (E)
  215. 3140  X(1)=X:X(2)=X+1:X(3)=X+2:X(4)=X+3:X(5)=X+4
  216. 3150  FOR I=1 TO 5:Y(I)=Y:NEXT I
  217. 3160  Y(6)=Y+1:Y(7)=Y-1
  218. 3170  IF E=1 THEN X(6)=X:X(7)=X
  219. 3180  IF E=2 THEN X(6)=X(5):X(7)=X(5)
  220. 3190  GOTO 3340
  221. 3200  REM PLACE THE AC IN POSSIBLE DIRECTION 2 (S)
  222. 3210  Y(1)=Y:Y(2)=Y+1:Y(3)=Y+2:Y(4)=Y+3:Y(5)=Y+4
  223. 3220  FOR I=1 TO 5 :X(I)=X: NEXT I
  224. 3230  X(6)=X+1:X(7)=X-1
  225. 3240  IF E=2 THEN Y(6)=Y(5):Y(7)=Y(5)
  226. 3250  IF E=1 THEN Y(6)=Y:Y(7)=Y
  227. 3260  GOTO 3340
  228. 3270  REM PLACE AC IN POSSIBLE DIRECTION 3 (W)
  229. 3280  X(1)=X:X(2)=X-1:X(3)=X-2:X(4)=X-3:X(5)=X-4
  230. 3290  FOR I=1 TO 5:Y(I)=Y:NEXT I
  231. 3300  Y(6)=Y+1:Y(7)=Y-1
  232. 3310  IF E=1 THEN X(6)=X:X(7)=X
  233. 3320  IF E=2 THEN X(6)=X(5):X(7)=X(5)
  234. 3330  GOTO 3340
  235. 3340  REM
  236. 3350  ZZZ=7
  237. 3360  GOSUB 5090
  238. 3370  REM PLACE THE BATTLESHIP
  239. 3380  COLOR 28,0:LOCATE 23,1
  240. 3390  PRINT "NOW IT IS THE BATTLESHIP WE ARE WORKING ON.     ";
  241. 3400  COLOR 7,0
  242. 3410  X=INT(10*RND):Y=INT(10*RND):Z=INT(4*RND)
  243. 3420  REM CHOOSE RANDOM NUMBERS FOR END AND DIRECTION OF THE BATTLESHIP
  244. 3430  FLIP=0
  245. 3440  IF Z=0 AND Y<4 THEN GOTO 3410
  246. 3450  IF Z=1 AND X>5 THEN GOTO 3410
  247. 3460  IF Z=2 AND Y>5 THEN GOTO 3410
  248. 3470  IF Z=3 AND X<4 THEN GOTO 3410
  249. 3480  ON Z GOTO 3560,3620,3680
  250. 3490  REM HIDE THE BATTLESHIP IN THE 0 (N) DIRECTION
  251. 3500  FOR I=8 TO 12
  252. 3510  X(I)=X
  253. 3520  NEXT I
  254. 3530  Y(8)=Y:Y(9)=Y-1:Y(10)=Y-2:Y(11)=Y-3:Y(12)=Y-4
  255. 3540  GOTO 3720
  256. 3550  REM HIDE THE BATTLESHIP IN THE 1 (E) DIRECTION
  257. 3560  FOR I=8 TO 12
  258. 3570  Y(I)=Y
  259. 3580  NEXT I
  260. 3590  X(8)=X:X(9)=X+1:X(10)=X+2:X(11)=X+3:X(12)=X+4
  261. 3600  GOTO 3720
  262. 3610  REM HIDE THE BATTLESHIP IN THE 2 (S) DIRECTION
  263. 3620  FOR I=8 TO 12
  264. 3630  X(I)=X
  265. 3640  NEXT I
  266. 3650  Y(8)=Y:Y(9)=Y+1:Y(10)=Y+2:Y(11)=Y+3:Y(12)=Y+4
  267. 3660  GOTO 3720
  268. 3670  REM HIDE THE BATTLESHIP IN THE 3 (W) DIRECTION
  269. 3680  FOR I=8 TO 12
  270. 3690  Y(I)=Y
  271. 3700  NEXT I
  272. 3710  X(8)=X:X(9)=X-1:X(10)=X-2:X(11)=X-3:X(12)=X-4
  273. 3720  REM CHECK PLACING OF BATTLESHIP FOR CONTACT/OVERLAP
  274. 3730  ZZZZ=5
  275. 3740  GOSUB 5290
  276. 3750  IF FLIP=1 THEN GOTO 3410
  277. 3760  ZZZ=ZZZ+ZZZZ
  278. 3770  GOSUB 5090
  279. 3780  REM HIDE THE CRUISER
  280. 3790  COLOR 28,0
  281. 3800  LOCATE 23,1
  282. 3810  PRINT "WE ARE GETTING CLOSE---ITS CRUISER TIME!      "
  283. 3820  COLOR 7,0
  284. 3830  X=INT(10*RND):Y=INT(10*RND):Z=INT(4*RND)
  285. 3840  FLIP=0
  286. 3850  IF Z=0 AND Y<3 THEN GOTO 3830
  287. 3860  IF Z=1 AND X>6 THEN GOTO 3830
  288. 3870  IF Z=2 AND Y>6 THEN GOTO 3830
  289. 3880  IF Z=3 AND X<3 THEN GOTO 3830
  290. 3890  ON Z GOTO 3960,4020,4080
  291. 3900  REM PLACE CRUISER IN 0 DIRECTION (N)
  292. 3910  FOR I=13 TO 16
  293. 3920  X(I)=X
  294. 3930  NEXT I
  295. 3940  Y(13)=Y:Y(14)=Y-1:Y(15)=Y-2:Y(16)=Y-3
  296. 3950  GOTO 4140
  297. 3960  REM PLACE CRUSIER IN 1 DIRECTION (E)
  298. 3970  FOR I=13 TO 16
  299. 3980  Y(I)=Y
  300. 3990  NEXT I
  301. 4000  X(13)=X:X(14)=X+1:X(15)=X+2:X(16)=X+3
  302. 4010  GOTO 4140
  303. 4020  REM PLACE CRUISER IN 2 DIRECTION (S)
  304. 4030  FOR I=13 TO 16
  305. 4040  X(I)=X
  306. 4050  NEXT I
  307. 4060  Y(13)=Y:Y(14)=Y+1:Y(15)=Y+2:Y(16)=Y+3
  308. 4070  GOTO 4140
  309. 4080  REM PLACE CRUSIER IN 3 DIRECTION (W)
  310. 4090  FOR I=13 TO 16
  311. 4100  Y(I)=Y
  312. 4110  NEXT I
  313. 4120  X(13)=X:X(14)=X-1:X(15)=X-2:X(16)=X-3
  314. 4130  GOTO 4140
  315. 4140  REM CHECK CRUISER FOR OVERLAP
  316. 4150  ZZZZ=4
  317. 4160  GOSUB 5290
  318. 4170  IF FLIP=1 THEN GOTO 3830
  319. 4180  ZZZ=ZZZ+ZZZZ
  320. 4190  GOSUB 5090
  321. 4200  REM HIDE THE DESTROYER
  322. 4210  COLOR 28,0
  323. 4220  LOCATE 23,1
  324. 4230  PRINT "D E S T R O Y E R   T I M E                "
  325. 4240  COLOR 7,0
  326. 4250  X=INT(10*RND):Y=INT(10*RND):Z=INT(4*RND)
  327. 4260  FLIP=0
  328. 4270  IF Z=0 AND Y<2 THEN GOTO 4250
  329. 4280  IF Z=1 AND X>7 THEN GOTO 4250
  330. 4290  IF Z=2 AND Y>7 THEN GOTO 4250
  331. 4300  IF Z=3 AND X<2 THEN GOTO 4250
  332. 4310  ON Z GOTO 4380,4440,4500
  333. 4320  REM PLACE DESTROYER IN 0 (N) DIRECTION
  334. 4330  FOR I=17 TO 19
  335. 4340  X(I)=X
  336. 4350  NEXT I
  337. 4360  Y(17)=Y:Y(18)=Y-1:Y(19)=Y-2
  338. 4370  GOTO 4550
  339. 4380  REM PLACE DESTROYER IN 1 (E) DIRECTION
  340. 4390  FOR I=17 TO 19
  341. 4400  Y(I)=Y
  342. 4410  NEXT I
  343. 4420  X(17)=X:X(18)=X+1:X(19)=X+2
  344. 4430  GOTO 4550
  345. 4440  REM PLACE DESTROYER IN 2 (S) DIRECTION
  346. 4450  FOR I=17 TO 19
  347. 4460  X(I)=X
  348. 4470  NEXT I
  349. 4480  Y(17)=Y:Y(18)=Y+1:Y(19)=Y+2
  350. 4490  GOTO 4550
  351. 4500  REM PLACE DESTROYER IN 3 (W) DIRECTION
  352. 4510  FOR I=17 TO 19
  353. 4520  Y(I)=Y
  354. 4530  NEXT I
  355. 4540  X(17)=X:X(18)=X-1:X(19)=X-2
  356. 4550  REM CHECK DESTROYER FOR OVERLAP
  357. 4560  ZZZZ=3
  358. 4570  GOSUB 5290
  359. 4580  IF FLIP=1 THEN GOTO 4250
  360. 4590  ZZZ=ZZZ+ZZZZ
  361. 4600  GOSUB 5090
  362. 4610  REM PLACE THE SUB
  363. 4620  COLOR 28,0
  364. 4630  LOCATE 23,1
  365. 4640  PRINT "NEXT TO THE LAST ONE NOW -- SUB TIME....    "
  366. 4650  COLOR 7,0
  367. 4660  X=INT(10*RND):Y=INT(10*RND):Z=INT(4*RND)
  368. 4670  FLIP=0
  369. 4680  IF Z=0 AND Y<1 THEN GOTO 4660
  370. 4690  IF Z=1 AND X>8 THEN GOTO 4660
  371. 4700  IF Z=2 AND Y>8 THEN GOTO 4660
  372. 4710  IF Z=3 AND X<1 THEN GOTO 4660
  373. 4720  ON Z GOTO 4770,4810,4850
  374. 4730  REM PLACE SUB IN THE 0 DIRECTION (N)
  375. 4740  X(20)=X:X(21)=X
  376. 4750  Y(20)=Y:Y(21)=Y-1
  377. 4760  GOTO 4880
  378. 4770  REM PLACE SUB IN THE 1 DIRECTION (E)
  379. 4780  Y(20)=Y:Y(21)=Y
  380. 4790  X(20)=X:X(21)=X+1
  381. 4800  GOTO 4880
  382. 4810  REM PLACE SUB IN THE 2 DIRECTION (S)
  383. 4820  Y(20)=Y:Y(21)=Y+1
  384. 4830  X(20)=X:X(21)=X
  385. 4840  GOTO 4880
  386. 4850  REM PLACE SUB IN THE 3 DIRECTION (W)
  387. 4860  Y(20)=Y:Y(21)=Y
  388. 4870  X(20)=X:X(21)=X-1
  389. 4880  REM CHECK SUB FOR OVERLAP
  390. 4890  ZZZZ=2
  391. 4900  GOSUB 5290
  392. 4910  IF FLIP=1 THEN GOTO 4660
  393. 4920  ZZZ=ZZZ+ZZZZ
  394. 4930  GOSUB 5090
  395. 4940  REM PLACE THE PT BOAT=AND EASY JOB
  396. 4950  COLOR 28,0
  397. 4960  LOCATE 23,1
  398. 4970  PRINT "NOW THE LAST AND EASIEST -- THE P.T BOAT"
  399. 4980  COLOR 7,0
  400. 4990  X(22)=INT(10*RND):Y(22)=INT(10*RND)
  401. 5000  ZZZZ=1
  402. 5010  FLIP=0
  403. 5020  GOSUB 5290
  404. 5030  IF FLIP=1 THEN GOTO 4990
  405. 5040  ZZZ=ZZZ+ZZZZ
  406. 5050  GOSUB 5090
  407. 5060  LOCATE 23,1
  408. 5070  PRINT "                                               "
  409. 5080  RETURN
  410. 5090  REM GENERATE XED OR YED OUT SQUARES WHERE NO SHIP CAN BE PLACED
  411. 5100  FOR I=1 TO ZZZ
  412. 5110  J=(((I-1)*9)+1)
  413. 5120  XED(J)=X(I):YED(J)=Y(I)+1
  414. 5130  XED(J+1)=X(I):YED(J+1)=Y(I)-1
  415. 5140  XED(J+2)=X(I)-1:YED(J+2)=Y(I)
  416. 5150  XED(J+3)=X(I)+1:YED(J+3)=Y(I)
  417. 5160  XED(J+4)=X(I)+1:YED(J+4)=Y(I)+1
  418. 5170  XED(J+5)=X(I)-1:YED(J+5)=Y(I)-1
  419. 5180  XED(J+6)=X(I)+1:YED(J+6)=Y(I)-1
  420. 5190  XED(J+7)=X(I)-1:YED(J+7)=Y(I)+1
  421. 5200  XED(J+8)=X(I):YED(J+8)=Y(I)
  422. 5210  NEXT I
  423. 5220  REM DELETE REM FROM THE NEXT 5 LINES FOR DEBUG - CHECK THE PLACEMENT OF THE SHIPS IS CORRECTLY DONE WITHOUT TOUCHING OR OVERLAP
  424. 5230  REM FOR I=1 TO 9*ZZZ
  425. 5240  REM A(I)=((YED(I)*2)+3):B(I)=((XED(I)*5)+6)
  426. 5250  REM LOCATE A(I),B(I)
  427. 5260  REM PRINT "X"
  428. 5270  REM NEXT
  429. 5280  RETURN
  430. 5290  REM CHECK FOR OVERLAP OR TOUCHING OF SHIPS
  431. 5300  FOR I=1 TO 9*ZZZ
  432. 5310  FOR J=ZZZ+1 TO ZZZZ+ZZZ
  433. 5320  IF X(J)=XED(I) AND Y(J)=YED(I) THEN FLIP=1
  434. 5330  NEXT J
  435. 5340  NEXT I
  436. 5350  RETURN
  437. 5360  REM THIS IS THE INPUT THE SHOTS PER TURN AREA
  438. 5370  FOR J=1 TO 3
  439. 5380  LOCATE 23,1
  440. 5390  PRINT "                                                      ";
  441. 5400  LOCATE 23,1
  442. 5410  PRINT "                                                       ";CHR$(220);CHR$(220);CHR$(220);CHR$(220);CHR$(220);CHR$(220);CHR$(220);CHR$(220);CHR$(220);CHR$(220);
  443. 5420  PRINT CHR$(0);CHR$(0);CHR$(0);CHR$(0);CHR$(0);CHR$(220);CHR$(220);CHR$(220);CHR$(220);CHR$(220);:LOCATE 23,55:PRINT CHR$(219):LOCATE 23,60:PRINT CHR$(219):LOCATE 23,65:PRINT CHR$(219):LOCATE 23,70:PRINT CHR$(219):LOCATE 23,75:PRINT CHR$(219);
  444. 5430  LOCATE 23,1:PRINT "SHOT #";J;" FOR TURN #";TURN;"-FORMAT C8 OR G2 ETC.";:INPUT S$(TURN,J)
  445. 5440  PRINT "                                                       ";
  446. 5450  IF LEN(S$(TURN,J))<>2 THEN LOCATE 24,1:PRINT "ILLEGAL INPUT";:GOTO 5380
  447. 5460  YY$(TURN,J)=LEFT$(S$(TURN,J),1)
  448. 5470  IF YY$(TURN,J)="A" THEN YY(TURN,J)=0:GOTO 5700
  449. 5480  IF YY$(TURN,J)="a" THEN YY(TURN,J)=0:GOTO 5700
  450. 5490  IF YY$(TURN,J)="B" THEN YY(TURN,J)=1:GOTO 5700
  451. 5500  IF YY$(TURN,J)="b" THEN YY(TURN,J)=1:GOTO 5700
  452. 5510  IF YY$(TURN,J)="C" THEN YY(TURN,J)=2:GOTO 5700
  453. 5520  IF YY$(TURN,J)="c" THEN YY(TURN,J)=2:GOTO 5700
  454. 5530  IF YY$(TURN,J)="D" THEN YY(TURN,J)=3:GOTO 5700
  455. 5540  IF YY$(TURN,J)="d" THEN YY(TURN,J)=3:GOTO 5700
  456. 5550  IF YY$(TURN,J)="E" THEN YY(TURN,J)=4:GOTO 5700
  457. 5560  IF YY$(TURN,J)="e" THEN YY(TURN,J)=4:GOTO 5700
  458. 5570  IF YY$(TURN,J)="F" THEN YY(TURN,J)=5:GOTO 5700
  459. 5580  IF YY$(TURN,J)="f" THEN YY(TURN,J)=5:GOTO 5700
  460. 5590  IF YY$(TURN,J)="G" THEN YY(TURN,J)=6:GOTO 5700
  461. 5600  IF YY$(TURN,J)="g" THEN YY(TURN,J)=6:GOTO 5700
  462. 5610  IF YY$(TURN,J)="H" THEN YY(TURN,J)=7:GOTO 5700
  463. 5620  IF YY$(TURN,J)="h" THEN YY(TURN,J)=7:GOTO 5700
  464. 5630  IF YY$(TURN,J)="I" THEN YY(TURN,J)=8:GOTO 5700
  465. 5640  IF YY$(TURN,J)="i" THEN YY(TURN,J)=8:GOTO 5700
  466. 5650  IF YY$(TURN,J)="J" THEN YY(TURN,J)=9:GOTO 5700
  467. 5660  IF YY$(TURN,J)="j" THEN YY(TURN,J)=9:GOTO 5700
  468. 5670  LOCATE 24,1
  469. 5680  LOCATE 24,1
  470. 5690  PRINT "ILLEGAL INPUT";:GOTO 5380
  471. 5700  XX(TURN,J)=VAL(RIGHT$(S$(TURN,J),1))
  472. 5710  X$=(RIGHT$(S$(TURN,J),1)):IF ASC(X$)<48 OR ASC(X$)>57 THEN LOCATE 24,1:PRINT "ILLEGAL INPUT";:GOTO 5380
  473. 5720  IF XX(TURN,J)<0 OR XX(TURN,J)>9 THEN LOCATE 24,1:PRINT "ILLEGAL INPUT ";:GOTO 5380
  474. 5730  REM THIS SECTION FOR CHECKING TO SEE IF A SHOT HAS BEEN USED
  475. 5740  FLIP=0
  476. 5750  FOR K=1 TO (TURN)
  477. 5760  FOR L=1 TO 3
  478. 5770  IF TURN=K AND L=J THEN GOTO 5790
  479. 5780  IF S$(TURN,J)=S$(K,L) THEN FLIP=1
  480. 5790  NEXT L
  481. 5800  NEXT K
  482. 5810  IF FLIP=1 THEN LOCATE 24,1: PRINT "YOU USED THAT ONE BEFORE - TRY AGAIN";:GOTO 5380
  483. 5820  FOR I=2000 TO 80 STEP -5:SOUND I,0.2:NEXT I:SOUND 300,2:SOUND 200,10
  484. 5830  A=((YY(TURN,J)*2)+3):B=((XX(TURN,J)*5)+4)
  485. 5840  LOCATE A,B
  486. 5850  PRINT TURN;
  487. 5860  NEXT J
  488. 5870  COLOR 0,7
  489. 5880  LOCATE 23,1:PRINT "NOW CALCULATING THE RESULTS OF YOUR SHOTS-SEE ABOVE";
  490. 5890  COLOR 7,0
  491. 5900  FOR J=1 TO 3
  492. 5910  FOR K=1 TO 22
  493. 5920  FLIP = 0
  494. 5930  IF XX(TURN,J)=X(K) AND YY(TURN,J)=Y(K) THEN FLIP=1
  495. 5940  IF FLIP=1 AND K<8 THEN HAC=HAC+1:DD=1
  496. 5950  IF FLIP=1 AND K<13 AND K>7 THEN HB=HB+1:DD=2
  497. 5960  IF FLIP=1 AND K<17 AND K>12 THEN HC=HC+1:DD=3
  498. 5970  IF FLIP=1 AND K>16 AND K<20 THEN HD=HD+1:DD=4
  499. 5980  IF FLIP=1 AND K>19 AND K<22 THEN HS=HS+1:DD=5
  500. 5990  IF FLIP=1 AND K>21 THEN HPT=HPT+1:DD=6
  501. 6000  ON FLIP GOSUB 6050
  502. 6010  NEXT K
  503. 6020  NEXT J
  504. 6030  RETURN
  505. 6040  REM SECTION FOR RECORDING YOUR HITS
  506. 6050  ON DD GOTO 6060,6150,6220,6280,6330,6370
  507. 6060  REM YOUR HIT THE AC
  508. 6070  ON HAC GOTO 6080,6090,6100,6110,6120,6130,6140
  509. 6080  LOCATE 4,56:PRINT TURN:RETURN
  510. 6090  LOCATE 4,61:PRINT TURN:RETURN
  511. 6100  LOCATE 4,66:PRINT TURN:RETURN
  512. 6110  LOCATE 4,71:PRINT TURN:RETURN
  513. 6120  LOCATE 4,76:PRINT TURN:RETURN
  514. 6130  LOCATE 2,56:PRINT TURN:RETURN
  515. 6140  LOCATE 6,56:PRINT TURN:RETURN
  516. 6150  REM YOU HIT THE BAT
  517. 6160  ON HB GOTO 6170,6180,6190,6200,6210
  518. 6170  LOCATE 10,56:PRINT TURN:RETURN
  519. 6180  LOCATE 10,61:PRINT TURN:RETURN
  520. 6190  LOCATE 10,66:PRINT TURN:RETURN
  521. 6200  LOCATE 10,71:PRINT TURN:RETURN
  522. 6210  LOCATE 10,76:PRINT TURN:RETURN
  523. 6220  REM YOU HIT THE CRU
  524. 6230  ON HC GOTO 6240,6250,6260,6270
  525. 6240  LOCATE 14,56:PRINT TURN:RETURN
  526. 6250  LOCATE 14,61:PRINT TURN:RETURN
  527. 6260  LOCATE 14,66:PRINT TURN:RETURN
  528. 6270  LOCATE 14,71:PRINT TURN:RETURN
  529. 6280  REM YOU HIT THE DES
  530. 6290  ON HD GOTO 6300,6310,6320
  531. 6300  LOCATE 18,56:PRINT TURN:RETURN
  532. 6310  LOCATE 18,61:PRINT TURN:RETURN
  533. 6320  LOCATE 18,66:PRINT TURN:RETURN
  534. 6330  REM YOU HIT THE SUB
  535. 6340  ON HS GOTO 6350,6360
  536. 6350  LOCATE 22,56:PRINT TURN:RETURN
  537. 6360  LOCATE 22,61:PRINT TURN:RETURN
  538. 6370  REM YOU HIT THE PT
  539. 6380  LOCATE 22,71:PRINT TURN
  540. 6390  RETURN
  541. 6400  PLAY "T150L8O3CFAO4L4CL8O3AO4L2C"
  542. 6410  RETURN
  543. 6420  PLAY "O3L4CCL2FL4CFL2AL4CFACFACFL2AL4FAO4L2CO3AFCL4CCL1F"
  544. 6430  RETURN
  545.